<!DOCTYPE html>
<!-- saved from url=(0053)https://www.cnblogs.com/savorboard/p/webrtc-rtsp.html -->
<html lang="zh-cn"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="referrer" content="origin-when-crossorigin">
    <meta name="description" content="简介 背景 由于项目需要，需要使用摄像头预览功能，设备型号为海康威视。目前已存在的基于 FFmpeg 的方案延迟都太高，所以项目最终选择基于此方案。 方案 方案选用为基于 WebRTC 的视频即时通讯">
    <meta property="og:description" content="简介 背景 由于项目需要，需要使用摄像头预览功能，设备型号为海康威视。目前已存在的基于 FFmpeg 的方案延迟都太高，所以项目最终选择基于此方案。 方案 方案选用为基于 WebRTC 的视频即时通讯">
    <meta http-equiv="Cache-Control" content="no-transform">
    <meta http-equiv="Cache-Control" content="no-siteapp">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>基于 WebRTC 的  RTSP 视频实时预览 - Savorboard - 博客园</title>
    <link id="favicon" rel="shortcut icon" href="https://common.cnblogs.com/favicon.svg" type="image/svg+xml">
    
    <link rel="stylesheet" href="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/blog-common.min.css">
    <link id="MainCss" rel="stylesheet" href="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/bundle-simplememory.min.css">
    <link type="text/css" rel="stylesheet" href="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/cnblogs.css">
    <link type="text/css" rel="stylesheet" href="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/custom.css">
    <link id="mobile-style" media="only screen and (max-width: 767px)" type="text/css" rel="stylesheet" href="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/bundle-SimpleMemory-mobile.min.css">
    
    <link type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/savorboard/rss">
    <link type="application/rsd+xml" rel="EditURI" href="https://www.cnblogs.com/savorboard/rsd.xml">
    <link type="application/wlwmanifest+xml" rel="wlwmanifest" href="https://www.cnblogs.com/savorboard/wlwmanifest.xml">
    <script type="text/javascript" async="" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/analytics.js"></script><script>
        var currentBlogId = 120552;
        var currentBlogApp = 'savorboard';
        var cb_enable_mathjax = false;
        var isLogined = false;
        var isBlogOwner = false;
        var skinName = 'SimpleMemory';
        var visitorUserId = '';
        var hasCustomScript = true;
        try {
            if (hasCustomScript && document.referrer && document.referrer.indexOf('baidu.com') >= 0) {
                Object.defineProperty(document, 'referrer', { value: '' });
                Object.defineProperty(Document.prototype, 'referrer', { get: function(){ return ''; } });
            }
        } catch(error) { }
    </script>
        <script>
            var currentPostDateAdded = '2020-12-23 11:24';
        </script>
    <script src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/jquery-2.2.0.min.js"></script>
    <script src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/blog-common.min.js"></script><style type="text/css">.medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}</style>
    
    
    
    <script type="text/javascript">
        window.codeHighlightEngine = 1
        window.enableCodeLineNumber = false
    </script>
</head><style type="text/css" id="2060412056"></style>
<body class="skin-simplememory no-navbar">
    <a name="top"></a>
    <div id="top_nav" class="navbar forpc navbar-custom">
        <nav id="nav_main" class="navbar-main">
            <ul id="nav_left" class="navbar-list navbar-left">
                <li class="navbar-branding"><a href="https://www.cnblogs.com/" title="开发者的网上家园"><img src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/logo.svg" alt="博客园Logo"></a></li>
                <li><a href="https://www.cnblogs.com/" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;skin-navbar-sitehome&#39;)">首页</a></li>
                <li><a href="https://news.cnblogs.com/" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;skin-navbar-news&#39;)">新闻</a></li>
                <li><a href="https://q.cnblogs.com/" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;skin-navbar-q&#39;)">博问</a></li>
                <li><a id="nav_brandzone" href="https://brands.cnblogs.com/" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;skin-navbar-brands&#39;)">专区</a></li>
                <li><a href="https://ing.cnblogs.com/" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;skin-navbar-ing&#39;)">闪存</a></li>
                <li><a href="https://edu.cnblogs.com/" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;skin-navbar-edu&#39;)">班级</a></li>
            </ul>
            <ul id="nav_right" class="navbar-list navbar-right">
                <li>
                    <form id="zzk_search" class="navbar-search" action="https://zzk.cnblogs.com/s" method="get">
                        <input name="w" id="zzk_search_input" placeholder="代码改变世界" type="text" tabindex="3">
                        <button type="submit" id="zzk_search_button">
                            <img src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/search.svg" alt="搜索">
                        </button>
                    </form>
                </li>
                <li id="navbar_login_status" class="navbar-list">
                    <a class="navbar-user-info navbar-blog" href="https://i.cnblogs.com/EditPosts.aspx?opt=1" alt="写随笔" title="写随笔" style="display: none;">
                        <img id="new_post_icon" class="navbar-icon" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/newpost.svg" alt="写随笔">
                    </a>
                    <a id="navblog-myblog-icon" class="navbar-user-info navbar-blog" href="https://passport.cnblogs.com/GetBlogApplyStatus.aspx" alt="我的博客" title="我的博客" style="display: none;">
                        <img id="myblog_icon" class="navbar-icon" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/myblog.svg" alt="我的博客">
                    </a>
                    <a class="navbar-user-info navbar-message navbar-icon-wrapper" href="https://msg.cnblogs.com/" alt="短消息" title="短消息" style="display: none;">
                        <img id="msg_icon" class="navbar-icon" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/message.svg" alt="短消息">
                        <span id="msg_count" style="display: none"></span>
                    </a>
                    <div id="user_info" class="navbar-user-info dropdown" style="display: none;">
                        <a class="dropdown-button" href="https://home.cnblogs.com/">
                            <img id="user_icon" class="navbar-avatar" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/avatar-default.svg" alt="用户头像">
                        </a>
                        <div class="dropdown-menu">
                            <a id="navblog-myblog-text" href="https://passport.cnblogs.com/GetBlogApplyStatus.aspx">我的博客</a>
                            <a href="https://home.cnblogs.com/">我的园子</a>
                            <a href="https://account.cnblogs.com/settings/account">账号设置</a>
                            <a href="javascript:void(0)" id="navbar_lite_mode_toggle" title="简洁模式会使用简洁款皮肤显示所有博客">
    简洁模式 <img id="navbar_lite_mode_on" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/lite-mode-check.svg" class="hide"><span id="navbar_lite_mode_spinner" class="hide">...</span>
</a>
                            <a href="javascript:void(0)" onclick="account.logout();">退出登录</a>
                        </div>
                    </div>
                    <a class="navbar-anonymous" href="https://account.cnblogs.com/signup/" style="display: inline;">注册</a>
                    <a class="navbar-anonymous" href="javascript:void(0);" onclick="account.login()" style="display: inline;">登录</a>
                </li>
            </ul>
        </nav>
    </div>

    
    <!--done-->
<div id="home">
<div id="header">
	<div id="blogTitle">
        <a id="lnkBlogLogo" href="https://www.cnblogs.com/savorboard/"><img id="blogLogo" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/logo.gif" alt="返回主页"></a>		
		
<!--done-->
<h1><a id="Header1_HeaderTitle" class="headermaintitle HeaderMainTitle" href="https://www.cnblogs.com/savorboard/">Savorboard</a>
</h1>
<h2>『代码如诗』   
              ┈这是我们为世界写的诗歌。</h2>




		
	</div><!--end: blogTitle 博客的标题和副标题 -->
	<div id="navigator">
		
<ul id="navList">
<li><a id="blog_nav_sitehome" class="menu" href="https://www.cnblogs.com/">
博客园</a>
</li>
<li>
<a id="blog_nav_myhome" class="menu" href="https://www.cnblogs.com/savorboard/">
首页</a>
</li>
<li>


</li>
<li>
<a id="blog_nav_contact" class="menu" href="https://msg.cnblogs.com/send/Savorboard">
联系</a></li>
<li>
<a id="blog_nav_rss" class="menu" href="javascript:void(0)" data-rss="https://www.cnblogs.com/savorboard/rss/">
订阅</a>
<!--<partial name="./Shared/_XmlLink.cshtml" model="Model" /></li>--></li>
<li>
<a id="blog_nav_admin" class="menu" href="https://i.cnblogs.com/">
管理</a>
</li>
</ul>


		<div class="blogStats">
			<div id="blog_stats_place_holder"><script>loadBlogStats();</script></div>
		</div><!--end: blogStats -->
	</div><!--end: navigator 博客导航栏 -->
</div><!--end: header 头部 -->
<div id="main">
	<div id="mainContent">
	<div class="forFlow">
		<div id="post_detail">
    <!--done-->
    <div id="topics">
        <div class="post">
            <h1 class="postTitle">
                
<a id="cb_post_title_url" class="postTitle2 vertical-middle" href="https://www.cnblogs.com/savorboard/p/webrtc-rtsp.html">
    <span>基于 WebRTC 的  RTSP 视频实时预览</span>
    



</a>

            </h1>
            <div class="clear"></div>
            <div class="postBody">
                <div id="cnblogs_post_body" class="blogpost-body cnblogs-markdown">
<h3 id="简介">简介</h3>
<h4 id="背景">背景</h4>
<p>由于项目需要，需要使用摄像头预览功能，设备型号为海康威视。目前已存在的基于 FFmpeg 的方案延迟都太高，所以项目最终选择基于此方案。</p>
<h4 id="方案">方案</h4>
<p>方案选用为基于 WebRTC 的视频即时通讯，它原生支持对 RTP 协议的解码，所以能够做到延迟很低，大概0.2-0.4秒左右，其他方案都有大于1秒的延迟。</p>
<p>WebRTC对浏览器有要求，可以在下面的地址中查看支持的浏览器。</p>
<p><a href="https://caniuse.com/rtcpeerconnection" target="_blank">https://caniuse.com/rtcpeerconnection</a></p>
<p><img src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/250417-20201223112240280-815281964.png" alt="" loading="lazy" class="medium-zoom-image"></p>
<p>以下介绍内容来自百度百科</p>
<blockquote>
<p>WebRTC，名称源自网页即时通信（英语：Web Real-Time Communication）的缩写，是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。</p>
</blockquote>
<blockquote>
<p>WebRTC实现了基于网页的视频会议，标准是WHATWG 协议，目的是通过浏览器提供简单的javascript就可以达到实时通讯（Real-Time Communications (RTC)）能力。</p>
</blockquote>
<p>WebRTC 的实现方案在 Github 有非常多，经过一序列对比和测试，最终选择的是使用 <a href="https://github.com/mpromonet/webrtc-streamer" target="_blank">webrtc-streamer</a> 这个项目，其容易使用并且较为稳定。</p>
<h3 id="getting-started">Getting Started</h3>
<p><a href="https://github.com/mpromonet/webrtc-streamer" target="_blank">webrtc-streamer</a> 不仅支持对 RTSP 流的捕获而且还支持对V4L2以及屏幕窗口快照的捕获。</p>
<p>webrtc-streamer 内置了一个小型的 HTTP server 来对 webrtc 需要的相关接口提供支持。</p>
<p>下面具体开始如何设置：</p>
<h4 id="对摄像头进行配置">对摄像头进行配置</h4>
<p>由于 webrtc 的核心库还不支持 h265, 所以需要设置为 h264 编码。</p>
<p>登录到海康威视摄像头的后台配置中心，在 “视音频” 菜单下进行设置，然后保存。</p>
<p><img src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/250417-20201223102059025-1521845618.jpg" alt="" loading="lazy" class="medium-zoom-image"></p>
<h4 id="下载最新包">下载最新包</h4>
<p>在github 发布页面根据需要的平台选择相应的包下载</p>
<p><a href="https://github.com/mpromonet/webrtc-streamer/releases" target="_blank">https://github.com/mpromonet/webrtc-streamer/releases</a></p>
<p>下载完成后可以使用以下命令进行测试：</p>
<pre><code class="hljs coffeescript">.<span class="hljs-regexp">/webrtc-streamer rtsp:/</span>/wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
</code></pre>
<p>打开 localhost:8000 已访问页面</p>
<h4 id="测试设备">测试设备</h4>
<p>如果没有问题，就可以使用本地的设备进行测试了，海康威视视频流默认地址为：</p>
<pre><code class="hljs apache"><span class="hljs-attribute">rtsp</span>://账号:密码@IP地址:<span class="hljs-number">554</span>/Streaming/Channels/<span class="hljs-number">101</span>
</code></pre>
<p>替换相应的信息以进行测试。</p>
<p>如果是在 windows 下，webrtc-streamer 也会抓取到窗口和屏幕的快照页面，可以使用 -q 参数进行过滤，其支持正则表达式。这个参数没有在 help 列表里面列出来是我查看源码发现的。</p>
<pre><code class="hljs perl">./webrtc-streamer  rtsp:<span class="hljs-regexp">//</span>账号:密码@IP地址:<span class="hljs-number">554</span>/Streaming/Channels/<span class="hljs-number">101</span> -<span class="hljs-string">q (?=rtsp)</span>.*
</code></pre>
<h4 id="集成">集成</h4>
<p>你可以在下载的发布包中的html文件夹中找到 index.html 来查看示例代码，下面列出来核心代码：</p>
<pre><code class="language-html hljs xml">
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"libs/adapter.min.js"</span> &gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"webrtcstreamer.js"</span> &gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">        
    <span class="hljs-keyword">var</span> webRtcServer      = <span class="hljs-literal">null</span>;
    <span class="hljs-built_in">window</span>.onload         = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{ 
        webRtcServer      = <span class="hljs-keyword">new</span> WebRtcStreamer(<span class="hljs-string">"video"</span>,location.protocol+<span class="hljs-string">"//"</span>+<span class="hljs-built_in">window</span>.location.hostname+<span class="hljs-string">":8000"</span>);
	webRtcServer.connect(<span class="hljs-string">"rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"</span>);
    }
    <span class="hljs-built_in">window</span>.onbeforeunload = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{ webRtcServer.disconnect(); }
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span> 
    <span class="hljs-tag">&lt;<span class="hljs-name">video</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"video"</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>使用 WebComponent 集成</p>
<pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"webrtc-streamer-element.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
   <span class="hljs-tag">&lt;<span class="hljs-name">webrtc-streamer</span> <span class="hljs-attr">url</span>=<span class="hljs-string">"rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">webrtc-streamer</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<h3 id="总结">总结</h3>
<p>主要还是对 webrtc 的熟悉，你可以在 <a href="https://webrtc.org/getting-started/overview" target="_blank">https://webrtc.org/getting-started/overview</a> 找到相关指南。</p>
<p>比如什么是 TURN server，什么是peer connections 都可以在上面的指南中找到。</p>
<hr>
<blockquote>
<p>本文地址：<a href="http://www.cnblogs.com/savorboard/p/webrtc-rtsp.html" target="_blank">http://www.cnblogs.com/savorboard/p/webrtc-rtsp.html</a><br>
作者博客：<a href="http://www.cnblogs.com/savorboard" target="_blank">Savorboard</a><br>
本文原创授权为：署名 - 非商业性使用 - 禁止演绎，协议<a href="https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank">普通文本</a> | 协议<a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" target="_blank">法律文本</a></p>
</blockquote>

</div>
<div class="clear"></div>
<div id="blog_post_info_block">


    <div id="blog_post_info">
<div id="green_channel">
        <a href="javascript:void(0);" id="green_channel_digg" onclick="DiggIt(14177594,cb_blogId,1);green_channel_success(this,&#39;谢谢推荐！&#39;);">好文要顶</a>
        
    <a id="green_channel_favorite" onclick="AddToWz(cb_entryId);return false;" href="javascript:void(0);">收藏该文</a>
    <a id="green_channel_weibo" href="javascript:void(0);" title="分享至新浪微博" onclick="ShareToTsina()"><img src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/icon_weibo_24.png" alt=""></a>
    <a id="green_channel_wechat" href="javascript:void(0);" title="分享至微信" onclick="shareOnWechat()"><img src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/wechat.png" alt=""></a>
</div>
<div id="author_profile">
    <div id="author_profile_info" class="author_profile_info">
            <a href="https://home.cnblogs.com/u/savorboard/" target="_blank"><img src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/20160816172634.png" class="author_avatar" alt=""></a>
        <div id="author_profile_detail" class="author_profile_info">
            <a href="https://home.cnblogs.com/u/savorboard/">Savorboard</a><br>
            <a href="https://home.cnblogs.com/u/savorboard/followees/">关注 - 15</a><br>
            <a href="https://home.cnblogs.com/u/savorboard/followers/">粉丝 - 2607</a>
        </div>
    </div>
    <div class="clear"></div>
    <div id="author_profile_honor">推荐博客</div>
    <div id="author_profile_follow">
                <a href="javascript:void(0);" onclick="follow(&#39;7e9c908f-fd0c-e011-ac81-842b2b196315&#39;);return false;">+加关注</a>
    </div>
</div>
<div id="div_digg"><a id="green_channel_follow" onclick="follow(&#39;7e9c908f-fd0c-e011-ac81-842b2b196315&#39;);" href="javascript:void(0);">关注我</a>
    <div class="diggit" onclick="votePost(14177594,&#39;Digg&#39;)">
        <span class="diggnum" id="digg_count">6</span>
    </div>
    <div class="buryit" onclick="votePost(14177594,&#39;Bury&#39;)">
        <span class="burynum" id="bury_count">0</span>
    </div>
    <div class="clear"></div>
    <div class="diggword" id="digg_tips">
    </div>
</div>

<script type="text/javascript">
    currentDiggType = 0;
</script></div>
    <div class="clear"></div>
    <div id="post_next_prev">

    <a href="https://www.cnblogs.com/savorboard/p/cap-3-1.html" class="p_n_p_prefix">« </a> 上一篇：    <a href="https://www.cnblogs.com/savorboard/p/cap-3-1.html" title="发布于 2020-08-17 09:23">CAP 3.1 版本发布通告</a>
    <br>
    <a href="https://www.cnblogs.com/savorboard/p/cap-castle.html" class="p_n_p_prefix">» </a> 下一篇：    <a href="https://www.cnblogs.com/savorboard/p/cap-castle.html" title="发布于 2021-01-05 17:10">在 CAP 中使用 AOP ( Castle.DynamicProxy )</a>

</div>
</div>
            </div>
            <div class="postDesc">posted @ 
<span id="post-date">2020-12-23 11:24</span>&nbsp;
<a href="https://www.cnblogs.com/savorboard/">Savorboard</a>&nbsp;
阅读(<span id="post_view_count">7353</span>)&nbsp;
评论(<span id="post_comment_count">13</span>)&nbsp;
<a href="https://i.cnblogs.com/EditPosts.aspx?postid=14177594" rel="nofollow">编辑</a>&nbsp;
<a href="javascript:void(0)" onclick="AddToWz(14177594);return false;">收藏</a>&nbsp;
<a href="javascript:void(0)" onclick="reportManager.report({ currentUserId: &#39;&#39;, targetType: &#39;blogPost&#39;, targetId: &#39;14177594&#39;, targetLink: &#39;https://www.cnblogs.com/savorboard/p/webrtc-rtsp.html&#39;, title: &#39;基于 WebRTC 的  RTSP 视频实时预览&#39; })">举报</a></div>
        </div>
	    
	    
    </div><!--end: topics 文章、评论容器-->
</div>

<script src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/highlight.min.js" async="" onload="markdown_highlight()"></script>
<script>
    var allowComments = true, cb_blogId = 120552, cb_blogApp = 'savorboard', cb_blogUserGuid = '7e9c908f-fd0c-e011-ac81-842b2b196315';
    var cb_entryId = 14177594, cb_entryCreatedDate = '2020-12-23 11:24', cb_postType = 1;
    updatePostStats(
        [cb_entryId],
        function(id, count) { $("#post_view_count").text(count) },
        function(id, count) { $("#post_comment_count").text(count) })
    zoomManager.apply("#cnblogs_post_body img:not(.code_img_closed):not(.code_img_opened)");
</script>

<a name="!comments"></a>
<div id="blog-comments-placeholder"></div>
<div id="comment_form" class="commentform">
    <a name="commentform"></a>
    <div id="divCommentShow"></div>
    <div id="comment_nav"><span id="span_refresh_tips"></span><a href="javascript:void(0);" onclick="return RefreshCommentList();" id="lnk_RefreshComments" runat="server" clientidmode="Static">刷新评论</a><a href="https://www.cnblogs.com/savorboard/p/webrtc-rtsp.html#" onclick="return RefreshPage();">刷新页面</a><a href="https://www.cnblogs.com/savorboard/p/webrtc-rtsp.html#top">返回顶部</a></div>
    <div id="comment_form_container" style="visibility: visible;"><div class="login_tips">
    登录后才能查看或发表评论，立即 <a rel="nofollow" href="javascript:void(0);" class="underline" onclick="return account.login(&#39;!comments&#39;);">登录</a> 或者
    <a href="https://www.cnblogs.com/">逛逛</a> 博客园首页
</div>
</div>
    <div class="ad_text_commentbox" id="ad_text_under_commentbox"></div>
    <div id="ad_t2"><a href="https://heapdump.wjx.cn/vj/rX5RbFn.aspx?udsid=682731" target="_blank" onclick="gtag(&#39;event&#39;, &#39;click&#39;, {&#39;event_category&#39;: &#39;ad&#39;, &#39;event_label&#39;: &#39;T2-HeapDump&#39;})">【推荐】HeapDump性能社区2021性能领域问卷调研，参与即可抽奖！</a><br><a href="http://www.uccpsoft.com/index.htm" target="_blank" onclick="gtag(&#39;event&#39;, &#39;click&#39;, {&#39;event_category&#39;: &#39;ad&#39;, &#39;event_label&#39;: &#39;T2-ucancode&#39;})">【推荐】跨平台组态\工控\仿真\CAD 50万行C++源码全开放免费下载！</a><br><a href="https://www.cnblogs.com/cmt/p/15375689.html" target="_blank" onclick="gtag(&#39;event&#39;, &#39;click&#39;, {&#39;event_category&#39;: &#39;ad&#39;, &#39;event_label&#39;: &#39;T2-并行科技&#39;})">【推荐】并行超算云面向博客园粉丝推出“免费算力限时申领”特别活动</a><br><a href="https://c.gridsumdissector.com/r/?gid=gad_545_8klju0ss&amp;ck=46&amp;adk=582&amp;autorefresh=__AUTOREFRESH__" target="_blank" onclick="gtag(&#39;event&#39;, &#39;click&#39;, {&#39;event_category&#39;: &#39;ad&#39;, &#39;event_label&#39;: &#39;T2-pangle211008&#39;})">【注册】App开发者必备：打造增长变现闭环，高效成长，收入提升28%</a><br><a href="https://brands.cnblogs.com/huawei/p/2357" target="_blank" onclick="gtag(&#39;event&#39;, &#39;click&#39;, {&#39;event_category&#39;: &#39;ad&#39;, &#39;event_label&#39;: &#39;T2-华为专区&#39;})">【推荐】华为全面助力青少年编程教育普及，花瓣少儿编程正式上线</a><br></div>
    <div id="opt_under_post"></div>
    <div id="cnblogs_c1" class="under-post-card">
             <a onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;banner&#39;, &#39;click&#39;, &#39;Pangle-C1&#39;)" target="_blank" rel="nofollow" href="https://c.gridsumdissector.com/r/?gid=gad_545_mzyfo0un&amp;ck=46&amp;adk=566&amp;autorefresh=__AUTOREFRESH__">
                <img style="width: 300px; height: 250px;" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/35695-20211008160624813-1694591598.jpg" alt="" onload="impressC1()">
             </a>
    </div>
    <div id="under_post_card1"><div class="under-post-card">
<b>编辑推荐：</b>
<br>

· <a href="https://www.cnblogs.com/strick/p/15179666.html" target="_blank">带团队后的日常思考（五）</a>
    <br>
· <a href="https://www.cnblogs.com/thanks/p/15452702.html" target="_blank">聊聊我在微软外服的工作经历及一些个人见解</a>
    <br>
· <a href="https://www.cnblogs.com/chenssy/p/15440348.html" target="_blank">死磕 NIO — Reactor 模式就一定意味着高性能吗？</a>
    <br>
· <a href="https://www.cnblogs.com/arthinking/p/15422958.html" target="_blank">消息队列那么多，为什么建议深入了解下RabbitMQ？</a>
    <br>
· <a href="https://www.cnblogs.com/yexiaochai/p/15431566.html" target="_blank">技术管理进阶——管人还是管事？</a>
    <br>
</div></div>
    <div id="under_post_card2"><div class="itnews under-post-card">
    <b>最新新闻</b>：
    <br>
 ·          <a href="https://news.cnblogs.com/n/704654/" target="_blank">比超级计算机快千万倍 我国量子计算研究获重要进展（2021-10-26 09:17）</a>
        <br>
 ·          <a href="https://news.cnblogs.com/n/704653/" target="_blank">Facebook Q3净利润92亿美元同比涨17% 增加500亿美元股票回购（2021-10-26 09:10）</a>
        <br>
 ·          <a href="https://news.cnblogs.com/n/704652/" target="_blank">“买课如山倒学习如抽丝” 年轻人付费买课能否化解知识焦虑？（2021-10-26 09:02）</a>
        <br>
 ·          <a href="https://news.cnblogs.com/n/704651/" target="_blank">报道称美国国务院计划设立新的网络安全办公室（2021-10-26 08:58）</a>
        <br>
 ·          <a href="https://news.cnblogs.com/n/704650/" target="_blank">Zoom现为免费用户带来自动生成字幕等功能（2021-10-26 08:56）</a>
        <br>
    » <a href="https://news.cnblogs.com/" title="IT 新闻" target="_blank">更多新闻...</a>
</div></div>
    <div id="HistoryToday" class="under-post-card"></div>
    <script type="text/javascript">
       var commentManager = new blogCommentManager();
       commentManager.renderComments(0);
       fixPostBody();
setTimeout(function() { incrementViewCount(cb_entryId); }, 50);       deliverT2();
       deliverC1C2();
       loadNewsAndKb();
LoadPostCategoriesTags(cb_blogId, cb_entryId);       LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
       GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate, cb_postType);
       loadOptUnderPost();
       GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);
    </script>
</div>

	</div><!--end: forFlow -->
	</div><!--end: mainContent 主体内容容器-->
	<div id="sideBar">
		<div id="sideBarMain">
			<div id="sidebar_news" class="newsItem"><!--done-->
<h3 class="catListTitle">公告</h3>

<div id="blog-news">
    访问统计: <br>
<!-- Default Statcounter code for blog
http://www.cnblogs.com/savorboard -->
<span class="statcounter"><a id="sc_counter_11247317" class="statcounter" href="https://www.statcounter.com/" target="_blank"><img src="" alt="StatCounter - Free Web Tracker and Counter" border="0" undefined=""></a></span>
<script type="text/javascript">window['__document_write_ajax_callbacks__']['6']();</script><script type="text/javascript">window['__document_write_ajax_callbacks__']['7']();</script><script type="text/javascript">window['__document_write_ajax_callbacks__']['5']();</script><script type="text/javascript">window['__document_write_ajax_callbacks__']['4']();</script><script type="text/javascript">window['__document_write_ajax_callbacks__']['1']();</script>
    <noscript><div class="statcounter"><a title="Web Analytics
    Made Easy - StatCounter" href="https://statcounter.com/"
    target="_blank"><img class="statcounter"
    src="https://c.statcounter.com/11247317/0/5f7eb704/0/"
    alt="Web Analytics Made Easy -
    StatCounter"></a></div></noscript>
<!-- End of Statcounter Code -->

<br><br><p>姓名：杨晓东</p>
<p>所在位置: 四川－成都</p>
<p>Email：yangxiaodong1214@126.com</p>
<p>联系QQ：615709110</p>

<br><p>AWS Solutions Architect / Software Engineer / FOSS Developer</p>

<script type="text/javascript">window['__document_write_ajax_callbacks__']['8']();</script><script>window['__document_write_ajax_callbacks__']['2']();</script>
    <div id="profile_block">
        昵称：
        <a href="https://home.cnblogs.com/u/savorboard/">
            Savorboard
        </a>
        <br>
        园龄：
        <a href="https://home.cnblogs.com/u/savorboard/" title="入园时间：2010-12-21">
            10年10个月
        </a>
        <br>
荣誉：            <a href="https://www.cnblogs.com/expert/">推荐博客</a>
            <br>
        粉丝：
        <a href="https://home.cnblogs.com/u/savorboard/followers/">
            2607
        </a>
        <br>
        关注：
        <a href="https://home.cnblogs.com/u/savorboard/followees/">
            15
        </a>
        <div id="p_b_follow">
<a href="javascript:void(0)" onclick="follow(&#39;7e9c908f-fd0c-e011-ac81-842b2b196315&#39;)">+加关注</a></div>
        <script type="text/javascript">window['__document_write_ajax_callbacks__']['9']();</script><script>window['__document_write_ajax_callbacks__']['3']();</script>
    </div>
</div>

</div>
<div id="sidebar_c3"></div>
			<div id="blog-calendar" style="display:none"></div><script>loadBlogDefaultCalendar();</script>			
			<div id="leftcontentcontainer">
				<div id="blog-sidecolumn"><!-- 搜索 -->
<div id="sidebar_search" class="sidebar-block">
    
</div>

<!-- 常用链接 -->


<!-- 最新随笔 -->
<div id="sidebar_recentposts" class="sidebar-block"><div class="catListEssay">
<h3 class="catListTitle">最新随笔</h3>
    <ul>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/cap-auto-transaction.html">1.在 ASP.NET Core 中自动启用 CAP 事务</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/cap-5-1.html">2.CAP 5.1 版本发布通告 - 你期待的 Redis 来了</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/cap-5-0.html">3.CAP 5.0 版本发布通告</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/cap-castle.html">4.在 CAP 中使用 AOP ( Castle.DynamicProxy )</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/webrtc-rtsp.html">5.基于 WebRTC 的  RTSP 视频实时预览</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/cap-3-1.html">6.CAP 3.1 版本发布通告</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/flubucore.html">7.利用FlubuCore用C#来写DevOps脚本</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/glob.html">8.Glob 模式</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/cap-3-0.html">9.CAP 3.0 版本发布通告</a>

                </li>
                <li>
                    
<a href="https://www.cnblogs.com/savorboard/p/cap-2-6.html">10.CAP 2.6 版本发布通告</a>

                </li>
    </ul>
</div>

</div>

<!-- 我的标签 -->


<!-- 积分与排名 -->


<!-- 随笔分类、随笔档案、文章分类、新闻分类、相册、链接 -->
<div id="sidebar_categories">

    <div id="sidebar_postcategory" class="catListPostCategory sidebar-block">
        <h3 class="catListTitle">
            
随笔分类



        </h3>

        <ul>

                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/397840.html" rel="" target="">
    .NET Core(41)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/840273.html" rel="" target="">
    ASP.NET Core(50)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/1039240.html" rel="" target="">
    C#(4)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/873815.html" rel="" target="">
    EF Core(3)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/1039202.html" rel="" target="">
    Micro Service(13)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/1039199.html" rel="" target="">
    Python(3)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/1039197.html" rel="" target="">
    翻译转载(9)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/397842.html" rel="" target="">
    前端(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/category/397839.html" rel="" target="">
    算法 &amp; 设计模式(4)
</a>
 
                </li>                
            
        </ul>


    </div>    
    <div id="sidebar_postarchive" class="catListPostArchive sidebar-block">
        <h3 class="catListTitle">
            
随笔档案



        </h3>

        <ul>

                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2021/10.html" rel="" target="">
    2021年10月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2021/06.html" rel="" target="">
    2021年6月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2021/03.html" rel="" target="">
    2021年3月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2021/01.html" rel="" target="">
    2021年1月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2020/12.html" rel="" target="">
    2020年12月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2020/08.html" rel="" target="">
    2020年8月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2020/07.html" rel="" target="">
    2020年7月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2020/01.html" rel="" target="">
    2020年1月(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2019/08.html" rel="" target="">
    2019年8月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2019/06.html" rel="" target="">
    2019年6月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2019/04.html" rel="" target="">
    2019年4月(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2019/01.html" rel="" target="">
    2019年1月(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2018/10.html" rel="" target="">
    2018年10月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2018/09.html" rel="" target="">
    2018年9月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2018/08.html" rel="" target="">
    2018年8月(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2018/04.html" rel="" target="">
    2018年4月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2018/03.html" rel="" target="">
    2018年3月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/12.html" rel="" target="">
    2017年12月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/10.html" rel="" target="">
    2017年10月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/08.html" rel="" target="">
    2017年8月(4)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/07.html" rel="" target="">
    2017年7月(6)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/06.html" rel="" target="">
    2017年6月(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/05.html" rel="" target="">
    2017年5月(4)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/04.html" rel="" target="">
    2017年4月(4)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/03.html" rel="" target="">
    2017年3月(4)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/02.html" rel="" target="">
    2017年2月(4)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2017/01.html" rel="" target="">
    2017年1月(5)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/12.html" rel="" target="">
    2016年12月(5)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/11.html" rel="" target="">
    2016年11月(5)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/10.html" rel="" target="">
    2016年10月(5)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/09.html" rel="" target="">
    2016年9月(6)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/08.html" rel="" target="">
    2016年8月(5)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/07.html" rel="" target="">
    2016年7月(5)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/06.html" rel="" target="">
    2016年6月(5)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/05.html" rel="" target="">
    2016年5月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2016/04.html" rel="" target="">
    2016年4月(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2014/08.html" rel="" target="">
    2014年8月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2013/09.html" rel="" target="">
    2013年9月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2013/05.html" rel="" target="">
    2013年5月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2013/01.html" rel="" target="">
    2013年1月(2)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2012/12.html" rel="" target="">
    2012年12月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2012/10.html" rel="" target="">
    2012年10月(1)
</a>
 
                </li>                
                <li data-category-list-item-visible="false" style="display: none">
                    
<a href="https://www.cnblogs.com/savorboard/archive/2012/07.html" rel="" target="">
    2012年7月(1)
</a>
 
                </li>                
            <li>
                <a href="javascript:void(0)" onclick="sideColumnManager.loadMore(this)">更多</a>
            </li>
        </ul>


    </div>    
</div>

<!-- 最新评论 -->



<!-- 阅读排行榜 -->


<!-- 评论排行榜 -->


<!-- 推荐排行榜 -->
</div>
                    <script>loadBlogSideColumn();</script>
			</div>			
		</div><!--end: sideBarMain -->
	</div><!--end: sideBar 侧边栏容器 -->
	<div class="clear"></div>
	</div><!--end: main -->
	<div class="clear"></div>
	<div id="footer">
		<!--done-->
Copyright © 2021 Savorboard
<br><span id="poweredby">Powered by .NET 6 on Kubernetes</span>



	</div><!--end: footer -->
</div><!--end: home 自定义的最大容器 -->


    

    <input type="hidden" id="antiforgery_token" value="CfDJ8FO3GXnjClZGrNGr2Ic8Z1rcuMEawxwZwEQsvNqB6RVyUIpNeNSNZybO0y8BrTqlqZxQxXUWyiwY0RpAslhZkdz0qLfdEB8ZQbougpGX6_n-a2guDQmYMjCdkiJ58faCPBCOD7V-kv3AU_S-LFvrAEU">
    <script async="" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/js"></script>
    <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    var kv = getGACustom();
    if (kv) {
        gtag('set', kv);
    }
    gtag('config', 'UA-476124-1');
    </script>
    <script defer="" src="./基于 WebRTC 的 RTSP 视频实时预览 - Savorboard - 博客园_files/hm.js"></script>


<script type="text/javascript">
    var sc_project=11247317; 
    var sc_invisible=0; 
    var sc_security="5f7eb704"; 
    var scJsHost = "https://";
    document.write("<sc"+"ript type='text/javascript' src='" +
    scJsHost+
    "statcounter.com/counter/counter.js'></"+"script>");
    </script><script type="text/javascript">
$("#div_digg").prepend($("#green_channel_follow"));

</script><script type="text/javascript">getFollowStatus('7e9c908f-fd0c-e011-ac81-842b2b196315');</script></body></html>